/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.raitcon.hibernate.backbean;

import com.raitcon.hibernate.bean.Roles;
import com.raitcon.hibernate.bean.RolesAccion;
import com.raitcon.hibernate.db.RolesDB;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import org.hibernate.HibernateException;

@ManagedBean(name = "rolesBean")
@ViewScoped
public class RolesBean implements Serializable {

    private static final long serialVersionUID = -2477612760546575078L;
    private Roles roles;
    private List<Roles> listaRoles = null;
    private String mensaje;

    @PostConstruct
    public void iniciar() {
        roles = new Roles();
    }

    //Metodos Getter ans Setter
    public Roles getRoles() {
        return roles;
    }

    public void setRoles(Roles roles) {
        this.roles = roles;
    }

    public List<Roles> getListaRoles() {
        return listaRoles;
    }

    public void setListaRoles(List<Roles> listaRoles) {
        this.listaRoles = listaRoles;
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    //Metodos CRUD
    public void listarRolesAll() {
        listaRoles = null;
        RolesDB rolDB = new RolesDB();
        listaRoles = rolDB.getRolesAll();
    }

    public void listarRolesById() {
        Integer idRol = 0;
        try {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            ExternalContext externalContext = facesContext.getExternalContext();

            Map params = externalContext.getRequestParameterMap();
            idRol = Integer.parseInt(((String) params.get("idFormRol:codRol")));
        } catch (Exception e) {
            System.out.println("Error al capturar parametro idRol:" + e.getMessage());
        }
        System.out.println("idRol:" + idRol);

        RolesDB rolDB = new RolesDB();
        listaRoles = rolDB.getRolesById(idRol);
    }

    public void agregarRol() {
        int result = 0;
        Roles rol = new Roles();
        rol.setIdRol(roles.getIdRol());
        rol.setName(roles.getName());
        rol.setState(roles.getState());
        rol.setRegistry(roles.getRegistry());

        RolesDB rolDB = new RolesDB();
        result = rolDB.insertRoles(rol);
        System.out.println("result: " + result);
        if (result == 1) {
            mensaje = "Se guardo correctamente";
            System.out.println("mensaje: " + mensaje);
        } else {
            mensaje = "No se guardo correctamente";
        }
    }

    public void modificarRol() throws HibernateException, Exception {
        int result = 0;
        Roles rol = new Roles();
        rol.setIdRol(roles.getIdRol());
        rol.setName(roles.getName());
        rol.setState(roles.getState());
        rol.setRegistry(roles.getRegistry());

        RolesDB rolDB = new RolesDB();
        result = rolDB.updateRol(rol, roles.getIdRol());
        if (result == 1) {
            mensaje = "Se modifico de manera correcta";
        } else {
            mensaje = "No se puede ejecutar la modificaión";
        }

    }

    public void deleteRol() throws HibernateException, Exception {
        int result = 0;
        Integer idRol = 0;
        try {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            ExternalContext externalContext = facesContext.getExternalContext();

            Map params = externalContext.getRequestParameterMap();
            idRol = Integer.parseInt(((String) params.get("idFormRol:codRol")));
        } catch (Exception e) {
            System.out.println("Error al capturar parametro idRol:" + e.getMessage());
        }
        System.out.println("idRol:" + idRol);

        RolesDB rolDB = new RolesDB();
        List<Roles> listProfe = rolDB.getRolesById(idRol);
        Roles rol = null;
        for (Roles roles : listProfe) {
            rol = roles;
        }
        result = rolDB.deleteRoles(rol);
        if (result == 1) {
            System.out.println("result: " + result);
            mensaje = "Se elimino correctamente";
            System.out.println("mensaje: " + mensaje);
        } else {
            mensaje = "No se elimino correctamente";
        }
    }

    public void pintarFormulario() {

        System.out.println("codigo rol: " + roles.getIdRol());
        Integer codRol = roles.getIdRol();
        System.out.println("cod: " + codRol);
        List<Roles> lisRoles;
        RolesDB rolDB = new RolesDB();
        lisRoles = rolDB.getRolesById(codRol);
        for (Roles roles1 : lisRoles) {
            roles = roles1;
        }
    }
}
